iT邦幫忙

0

Laravel 系列 02 將 Laravel 安裝在子資料夾

  • 分享至 

  • xImage
  •  

假設原本專案資料夾是 C:\Web\SomeProject\httpdocs,後台是 C:\Web\SomeProject\httpdocs\admin 。原本後台是廠商寫的、前人寫的、路邊撿來的,太難用,又不能說不要就不要。因此想另外用laravel做一個後台來用。或者是由於租用主機的限制等等,需要把 laravel 安裝在子資料夾。假設我的後台想取名為 newadmin, 網址像這樣 http://someproject.test/newadmin/

大概有三種方法。

方法一

  1. 假設 laravel 資料夾就命名為 laravel,放到跟網頁根目錄 DocumentRoot 平級。例如 C:\Web\SomeProject\laravel

  2. 把 laravel 裡面的 public 重新命名,改叫 newadmin , 移到既有的網頁根目錄裡面。例如 C:\Web\SomeProject\httpdocs\newadmin

  3. 修改 laravel 裡面 public 的 index.php, 把路徑改對。

原本

if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
    require $maintenance;
}
...
require __DIR__.'/../vendor/autoload.php';
...
$app = require_once __DIR__.'/../bootstrap/app.php';

改成

if (file_exists($maintenance = __DIR__.'/../../laravel/storage/framework/maintenance.php')) {
    require $maintenance;
}
...
require __DIR__.'/../../laravel/vendor/autoload.php';
...
$app = require_once __DIR__.'/../../laravel/bootstrap/app.php';

資料夾結構

/* 原本的 DocumentRoot */
C:\Web\SomeProject\httpdocs\
    admin\...
    newadmin\...  (相當於新的 laravel 的 public)
    .htaccess
    .index

/* laravel 除了 public 以外的全部 */
C:\Web\SomeProject\laravel
    app
    bootstrap
    config
    database
    public    (用不到了)
    ....

可能的問題:在 laravel 資料夾做 git 的時候會遺漏原本網頁資料夾裡面的 newadmin。在原本的網頁資料做 git 的時候又僅僅包含 laravel 的 newadmin。

方法二:全部放子資料夾
如果全部都要放到子資料夾也可以。本來 public 是在 laravel 專案根目錄的資料夾之一,現在反過來,把public當成對外開放的資料夾,然後其餘專案目錄跟檔案放到public裡面。
跟方法一差不多,重點是修改 public/index.php 裡面的路徑

C:\Web\SomeProject\httpdocs\newadmin\
    laravel\
        app\
        bootstrap\
        config\
        database\
        vendor\
        ...
    .htaccess
    index.php

可能的問題:

  1. 全部放一起違背世界潮流。
  2. 是否可以只對這個 newadmin 做 git?好像不行。

方法三
維持laravel架構不變。但是原本網站使用目錄連結的方式連到 laravel 的 public。這樣 laravel 本身不用做額外調整。原原本本的 laravel 開發方式。看來可行。

資料夾如下

/* 原本的專案資料夾 */
C:\Web\SomeProject\httpdocs

/* 下面是目錄連結,不是實體資料夾 */
C:\Web\SomeProject\httpdocs\newadmin
    // 可以在httpdocs下面執行 mklink /D newadmin C:\Web\SomeProject\laravel\public

/* laravel本尊 */
C:\Web\SomeProject\laravel
    app\
    bootstrap\
    config\
    database\
    public\
        .htaccess
        index.php

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言